<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta http-equiv="Content-Language" content="zh-CN"><title>machine-id
  中文手册 [金步国]</title><style>
@font-face { font-family: "JinBuGuoWebMono"; src: url("http://www.jinbuguo.com/d/mono.ttf") format("truetype"); }
* { font-family: "JinBuGuoWebMono", "Ubuntu Mono", "Consolas", "Menlo", monospace; }
body { margin:10px; }
h1 { text-align:center; background:#ddd; }
h2#auth_name { text-align:center; margin: 10px 5%; }

    a.headerlink {
      color: #c60f0f;
      font-size: 0.8em;
      padding: 0 4px 0 4px;
      text-decoration: none;
      visibility: hidden;
    }

    a.headerlink:hover {
      background-color: #c60f0f;
      color: white;
    }

    h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, dt:hover > a.headerlink {
      visibility: visible;
    }
</style><script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d286c55b63a3c54a1e43d10d4c203e75"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><h1>machine-id 中文手册</h1><h2 id="auth_name">译者：<strong><a href="../index.html">金步国</a></strong></h2><hr><h3>版权声明</h3><p>本文译者是一位开源理念的坚定支持者，所以本文虽然不是软件，但是遵照开源的精神发布。</p><ul><li>无担保：本文译者不保证译文内容准确无误，亦不承担任何由于使用此文档所导致的损失。</li><li>自由使用：任何人都可以自由的<u>阅读/链接/打印</u>此文档，无需任何附加条件。</li><li>名誉权：任何人都可以自由的<u>转载/引用/再创作</u>此文档，但必须保留译者署名并注明出处。</li></ul><h3>其他作品</h3><p>本文译者十分愿意与他人分享劳动成果，如果你对我的其他翻译作品或者技术文章有兴趣，可以在如下位置查看现有的作品集：</p><ul><li><a href="../index.html">金步国作品集</a> [ <a href="../index.html">http://www.jinbuguo.com/</a> ]</li></ul><h3>联系方式</h3><p>由于译者水平有限，因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好)，请来信指出，任何提高译文质量的建议我都将虚心接纳。</p><ul><li>Email(QQ)：70171448在QQ邮箱</li></ul><hr><a href="systemd.index.html">手册索引</a> ·
  <a href="systemd.directives.html">指令索引</a><span style="float:right">systemd-241</span><hr><div class="refentry"><a name="machine-id"></a><div class="titlepage"></div><div class="refnamediv"><h2>名称</h2><p>machine-id — 本机"machine ID"配置文件</p></div><div class="refsynopsisdiv"><h2>大纲</h2><p><code class="filename">/etc/machine-id</code></p></div><div class="refsect1"><a name="id-1.5"></a><h2 id="描述">描述<a class="headerlink" title="Permalink to this headline" href="machine-id.html#%E6%8F%8F%E8%BF%B0">¶</a></h2><p> <code class="filename">/etc/machine-id</code> 文件包含一个
    在安装或首次启动操作系统时生成的、专属于本系统的、独一无二的"machine ID"。
    "machine ID"是一个32字符长度的十六进制小写字母字符串，并以换行符结尾。
    其本质是一个128位二进制整数的16进制表示。
    注意，"machine ID"不能为全零值。</p><p>"machine ID"通常在系统安装或首次启动时从一个随机数源生成，
    并且之后无论经过多少次开关机，也一直保持不变。
    另一方面，对于无状态系统，如果有必要，将在系统启动的早期自动随机生成一个"machine ID"。
    </p><p>"machine ID"可以通过内核引导选项
    <code class="varname">systemd.machine_id=</code> 来设置(例如用于网络启动)，也可以通过
    systemd 的 <code class="option">--machine-id=</code> 选项来设置。
    这两种方法设置的"machine ID"优先级都高于存储在
    <code class="filename">/etc/machine-id</code> 中的值。</p><p>"machine ID"一旦生成应该永远保持不变，
    即使系统的软件、硬件、网络的配置发生了变化，也不应该修改它。
    基于"machine ID"如此稳固的特性以及足够的长度(不容易重复)，可以将它用于取代 POSIX 系统调用
    <a href="http://man7.org/linux/man-pages/man3/gethostid.3.html"><span class="citerefentry"><span class="refentrytitle">gethostid</span>(3)</span></a>
    的功能。</p><p>这里的"machine ID"与"D-Bus machine ID"
    遵守相同的格式与逻辑。</p><p>由于"machine ID"可以精确的标识主机，
    因此它应该被视为"机密信息"，
    不应该直接暴露在不可信环境中，特别是不应该直接暴露在不可信的网络环境中。
    如果应用程序需要使用某种唯一标识符精确的标识主机，
    那么不应该直接使用 "machine ID" ，而应该使用经过应用程序自身内置的安全散列算法转换之后的值。
    这样可以确保使用同一种方式，安全的在不同主机之间传递唯一标识符，而不会泄露每台主机原本的 "machine ID" 。
    <a href="http://www.jinbuguo.com/systemd/sd_id128_get_machine_app_specific.html#"><span class="citerefentry"><span class="refentrytitle">sd_id128_get_machine_app_specific</span>(3)</span></a>
    API 就提供了一种安全散列算法的实现。</p></div><div class="refsect1"><a name="id-1.6"></a><h2 id="初始化">初始化<a class="headerlink" title="Permalink to this headline" href="machine-id.html#%E5%88%9D%E5%A7%8B%E5%8C%96">¶</a></h2><p>每台机器都应该具有一个独一无二的非空"machine ID"。
    为了达到这个目标，可以使用多种不同的方法初始化
    <code class="filename">/etc/machine-id</code> 文件。
    </p><p>一般来说，
    <code class="filename">/etc/machine-id</code> 应该
    在操作系统安装过程中完成初始化。</p><p>
    <a href="systemd-machine-id-setup.html#"><span class="citerefentry"><span class="refentrytitle">systemd-machine-id-setup</span>(1)</span></a>
    工具可以在安装操作系统时初始化"machine ID"。当然，使用其他方法初始化
    <code class="filename">/etc/machine-id</code> 也是可以的。
    </p><p>对于一次创建、多处使用的操作系统镜像(例如容器或云主机)，
    其中的
    <code class="filename">/etc/machine-id</code> 应该是一个空文件。
    这样，即使镜像是只读的，也可以在此空文件之上绑定挂载一个临时文件。
    在镜像的实例系统启动过程中，将会自动生成一个"machine ID"，
    并尽可能永久保存到的 <code class="filename">/etc/machine-id</code> 中。</p><p><a href="systemd-firstboot.html#"><span class="citerefentry"><span class="refentrytitle">systemd-firstboot</span>(1)</span></a>
    可以用于初始化已挂载(但未启动)的操作系统镜像的 <code class="filename">/etc/machine-id</code>
    文件。</p><p>所有使用
    <a href="systemd.html#"><span class="citerefentry"><span class="refentrytitle">systemd</span>(1)</span></a>
    的系统都必须拥有"machine ID"。如果指定了 <code class="varname">systemd.machine_id=</code>
    或 <code class="option">--machine-id=</code> 选项(见"描述"小节)，那么使用指定的"machine ID"，
    否则使用 <code class="filename">/etc/machine-id</code> 中的"machine ID"。
    如果 <code class="filename">/etc/machine-id</code> 为空或不存在，
    那么将会依次尝试 <code class="filename">/var/lib/dbus/machine-id</code> 中的值、
    内核命令行选项 <code class="varname">container_uuid</code> 的值、 KVM DMI
    <code class="filename">product_uuid</code> 的值(KVM系统)、随机生成的
    UUID 值。</p><p>确定"machine ID"之后，
    <a href="systemd.html#"><span class="citerefentry"><span class="refentrytitle">systemd</span>(1)</span></a>
    将会尝试将其写入 <code class="filename">/etc/machine-id</code> 文件中，如果写入失败，
    将会继续尝试在 <code class="filename">/etc/machine-id</code> 之上绑定挂载一个临时文件并写入。
    如果文件系统为只读并且不包含
    <code class="filename">/etc/machine-id</code> 文件，那么将会导致错误。</p><p>如果 <code class="filename">/etc/machine-id</code> 在系统启动的早期处于只读状态，但随后变为可写，那么
    <a href="systemd-machine-id-commit.service.html#"><span class="citerefentry"><span class="refentrytitle">systemd-machine-id-commit.service</span>(8)</span></a>
    将会在 <code class="filename">/etc/machine-id</code> 文件变为可写之后，
    尝试将"machine ID"写入其中。</p></div><div class="refsect1"><a name="id-1.7"></a><h2 id="与 OSF UUID 的关系">与 OSF UUID 的关系<a class="headerlink" title="Permalink to this headline" href="machine-id.html#%E4%B8%8E%20OSF%20UUID%20%E7%9A%84%E5%85%B3%E7%B3%BB">¶</a></h2><p>"machine ID"符合
    <a class="ulink" href="https://tools.ietf.org/html/rfc4122" target="_top">RFC
    4122</a> 规范(OSF v4 UUID)，
    同时也符合 Microsoft GUID 规范。</p></div><div class="refsect1"><a name="id-1.8"></a><h2 id="历史">历史<a class="headerlink" title="Permalink to this headline" href="machine-id.html#%E5%8E%86%E5%8F%B2">¶</a></h2><p><code class="filename">/etc/machine-id</code>
    文件的格式源自D-Bus的 <code class="filename">/var/lib/dbus/machine-id</code> 文件。
    实际上，<code class="filename">/var/lib/dbus/machine-id</code>
    很可能就是指向
    <code class="filename">/etc/machine-id</code> 的一个软连接。</p></div><div class="refsect1"><a name="id-1.9"></a><h2 id="参见">参见<a class="headerlink" title="Permalink to this headline" href="machine-id.html#%E5%8F%82%E8%A7%81">¶</a></h2><p>
        <a href="systemd.html#"><span class="citerefentry"><span class="refentrytitle">systemd</span>(1)</span></a>,
        <a href="systemd-machine-id-setup.html#"><span class="citerefentry"><span class="refentrytitle">systemd-machine-id-setup</span>(1)</span></a>,
        <a href="http://man7.org/linux/man-pages/man3/gethostid.3.html"><span class="citerefentry"><span class="refentrytitle">gethostid</span>(3)</span></a>,
        <a href="hostname.html#"><span class="citerefentry"><span class="refentrytitle">hostname</span>(5)</span></a>,
        <a href="machine-info.html#"><span class="citerefentry"><span class="refentrytitle">machine-info</span>(5)</span></a>,
        <a href="os-release.html#"><span class="citerefentry"><span class="refentrytitle">os-release</span>(5)</span></a>,
        <a href="http://www.jinbuguo.com/systemd/sd-id128.html#"><span class="citerefentry"><span class="refentrytitle">sd-id128</span>(3)</span></a>,
        <a href="http://www.jinbuguo.com/systemd/sd_id128_get_machine.html#"><span class="citerefentry"><span class="refentrytitle">sd_id128_get_machine</span>(3)</span></a>,
        <a href="systemd-firstboot.html#"><span class="citerefentry"><span class="refentrytitle">systemd-firstboot</span>(1)</span></a>
      </p></div></div></body></html>
